UNION operatörü, iki veya daha fazla SELECT ifadesinin sonuç kümesini birleştirmek için kullanılır.
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2
UNION operatörü varsayılan olarak yalnızca farklı değerleri seçer. Yinelenen değerlere izin vermek için UNION ALL kullanın:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2
Bu derste ünlü örnek veritabanı "Northwind"'yi kullanacağız.
Aşağıda "Customers" ("Müşteriler") tablosundan bir örnek bulunmaktadır:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Ve "Suppliers" ("Tedarikçiler") tablosundaki örnek:
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country | Phone |
---|---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA | (313) 555-5735 |
4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan | (03) 3555-5011 |
5 | Cooperativa de Quesos 'Las Cabras' | Antonio del Valle Saavedra | Calle del Rosal 4 | Oviedo | 33007 | Spain | (98) 598 76 54 |
Aşağıdaki SQL ifadesi, Müşteriler ve Tedarikçiler tablolarından şehirleri (yalnızca farklı değerler) seçer:
Run SQLSELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City
Aşağıdaki SQL ifadesi, hem Müşteriler hem de Tedarikçiler tablolarından şehirleri (yinelenen değerler de) seçer:
Run SQLSELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City
Aşağıdaki SQL ifadesi, hem Müşteriler hem de Tedarikçiler tablolarından Almanya şehirlerini (yalnızca farklı değerler) seçmektedir:
Run SQLSELECT City, Country FROM Customers
WHERE Country = 'Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country = 'Germany'
ORDER BY City
Aşağıdaki SQL ifadesi, hem Müşteriler hem de Tedarikçiler tablolarından Alman şehirlerini (yinelenen değerler de) seçer:
Run SQLSELECT City, Country FROM Customers
WHERE Country = 'Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country = 'Germany'
ORDER BY City
Aşağıdaki SQL deyimi tüm müşterileri ve tedarikçileri listeler:
Run SQLSELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers
Yukarıdaki "AS Type" ifadesinin bir takma ad olduğunu unutmayın. SQL takma adları bir tabloya veya sütuna geçici bir ad vermek için kullanılır. Takma ad yalnızca istek süresince mevcuttur. Dolayısıyla burada ilgili kişinin "Müşteri" mi yoksa "Satıcı" mı olduğunu gösteren "Type" adında geçici bir sütun oluşturduk.